home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2000 March / maximum-cd-2000-03.iso / Quake3 Game Source / Q3AGameSource.exe / Main / ui_saveconfig.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-01-18  |  5.2 KB  |  193 lines

  1. // Copyright (C) 1999-2000 Id Software, Inc.
  2. //
  3. /*
  4. =============================================================================
  5.  
  6. SAVE CONFIG MENU
  7.  
  8. =============================================================================
  9. */
  10.  
  11. #include "ui_local.h"
  12.  
  13.  
  14. #define ART_BACK0            "menu/art/back_0"
  15. #define ART_BACK1            "menu/art/back_1"    
  16. #define ART_SAVE0            "menu/art/save_0"
  17. #define ART_SAVE1            "menu/art/save_1"
  18. #define ART_BACKGROUND        "menu/art/cut_frame"
  19.  
  20. #define ID_NAME            10
  21. #define ID_BACK            11
  22. #define ID_SAVE            12
  23.  
  24.  
  25. typedef struct {
  26.     menuframework_s    menu;
  27.  
  28.     menutext_s        banner;
  29.     menubitmap_s    background;
  30.     menufield_s        savename;
  31.     menubitmap_s    back;
  32.     menubitmap_s    save;
  33. } saveConfig_t;
  34.  
  35. static saveConfig_t        saveConfig;
  36.  
  37.  
  38. /*
  39. ===============
  40. UI_SaveConfigMenu_BackEvent
  41. ===============
  42. */
  43. static void UI_SaveConfigMenu_BackEvent( void *ptr, int event ) {
  44.     if( event != QM_ACTIVATED ) {
  45.         return;
  46.     }
  47.  
  48.     UI_PopMenu();
  49. }
  50.  
  51.  
  52. /*
  53. ===============
  54. UI_SaveConfigMenu_SaveEvent
  55. ===============
  56. */
  57. static void UI_SaveConfigMenu_SaveEvent( void *ptr, int event ) {
  58.     char    configname[MAX_QPATH];
  59.  
  60.     if( event != QM_ACTIVATED ) {
  61.         return;
  62.     }
  63.  
  64.     if( !saveConfig.savename.field.buffer[0] ) {
  65.         return;
  66.     }
  67.  
  68.     COM_StripExtension(saveConfig.savename.field.buffer, configname );
  69.     trap_Cmd_ExecuteText( EXEC_APPEND, va( "writeconfig %s.cfg\n", configname ) );
  70.     UI_PopMenu();
  71. }
  72.  
  73.  
  74. /*
  75. ===============
  76. UI_SaveConfigMenu_SavenameDraw
  77. ===============
  78. */
  79. static void UI_SaveConfigMenu_SavenameDraw( void *self ) {
  80.     menufield_s        *f;
  81.     int                style;
  82.     float            *color;
  83.  
  84.     f = (menufield_s *)self;
  85.  
  86.     if( f == Menu_ItemAtCursor( &saveConfig.menu ) ) {
  87.         style = UI_LEFT|UI_PULSE|UI_SMALLFONT;
  88.         color = text_color_highlight;
  89.     }
  90.     else {
  91.         style = UI_LEFT|UI_SMALLFONT;
  92.         color = colorRed;
  93.     }
  94.  
  95.     UI_DrawProportionalString( 320, 192, "Enter filename:", UI_CENTER|UI_SMALLFONT, color_orange );
  96.     UI_FillRect( f->generic.x, f->generic.y, f->field.widthInChars*SMALLCHAR_WIDTH, SMALLCHAR_HEIGHT, colorBlack );
  97.     MField_Draw( &f->field, f->generic.x, f->generic.y, style, color );
  98. }
  99.  
  100.  
  101. /*
  102. =================
  103. UI_SaveConfigMenu_Init
  104. =================
  105. */
  106. static void UI_SaveConfigMenu_Init( void ) {
  107.     memset( &saveConfig, 0, sizeof(saveConfig) );
  108.  
  109.     UI_SaveConfigMenu_Cache();
  110.     saveConfig.menu.wrapAround = qtrue;
  111.     saveConfig.menu.fullscreen = qtrue;
  112.  
  113.     saveConfig.banner.generic.type        = MTYPE_BTEXT;
  114.     saveConfig.banner.generic.x            = 320;
  115.     saveConfig.banner.generic.y            = 16;
  116.     saveConfig.banner.string            = "SAVE CONFIG";
  117.     saveConfig.banner.color                = color_white;
  118.     saveConfig.banner.style                = UI_CENTER;
  119.  
  120.     saveConfig.background.generic.type        = MTYPE_BITMAP;
  121.     saveConfig.background.generic.name        = ART_BACKGROUND;
  122.     saveConfig.background.generic.flags        = QMF_INACTIVE;
  123.     saveConfig.background.generic.x            = 142;
  124.     saveConfig.background.generic.y            = 118;
  125.     saveConfig.background.width                = 359;
  126.     saveConfig.background.height            = 256;
  127.  
  128.     saveConfig.savename.generic.type        = MTYPE_FIELD;
  129.     saveConfig.savename.generic.flags        = QMF_NODEFAULTINIT|QMF_UPPERCASE;
  130.     saveConfig.savename.generic.ownerdraw    = UI_SaveConfigMenu_SavenameDraw;
  131.     saveConfig.savename.field.widthInChars    = 20;
  132.     saveConfig.savename.field.maxchars        = 20;
  133.     saveConfig.savename.generic.x            = 240;
  134.     saveConfig.savename.generic.y            = 155+72;
  135.     saveConfig.savename.generic.left        = 240;
  136.     saveConfig.savename.generic.top            = 155+72;
  137.     saveConfig.savename.generic.right        = 233 + 20*SMALLCHAR_WIDTH;
  138.     saveConfig.savename.generic.bottom        = 155+72 + SMALLCHAR_HEIGHT+2;
  139.  
  140.     saveConfig.back.generic.type        = MTYPE_BITMAP;
  141.     saveConfig.back.generic.name        = ART_BACK0;
  142.     saveConfig.back.generic.flags        = QMF_LEFT_JUSTIFY|QMF_PULSEIFFOCUS;
  143.     saveConfig.back.generic.id            = ID_BACK;
  144.     saveConfig.back.generic.callback    = UI_SaveConfigMenu_BackEvent;
  145.     saveConfig.back.generic.x            = 0;
  146.     saveConfig.back.generic.y            = 480-64;
  147.     saveConfig.back.width                = 128;
  148.     saveConfig.back.height                = 64;
  149.     saveConfig.back.focuspic            = ART_BACK1;
  150.  
  151.     saveConfig.save.generic.type        = MTYPE_BITMAP;
  152.     saveConfig.save.generic.name        = ART_SAVE0;
  153.     saveConfig.save.generic.flags        = QMF_RIGHT_JUSTIFY|QMF_PULSEIFFOCUS;
  154.     saveConfig.save.generic.id            = ID_SAVE;
  155.     saveConfig.save.generic.callback    = UI_SaveConfigMenu_SaveEvent;
  156.     saveConfig.save.generic.x            = 640;
  157.     saveConfig.save.generic.y            = 480-64;
  158.     saveConfig.save.width                  = 128;
  159.     saveConfig.save.height              = 64;
  160.     saveConfig.save.focuspic            = ART_SAVE1;
  161.  
  162.     Menu_AddItem( &saveConfig.menu, &saveConfig.banner );
  163.     Menu_AddItem( &saveConfig.menu, &saveConfig.background );
  164.     Menu_AddItem( &saveConfig.menu, &saveConfig.savename );
  165.     Menu_AddItem( &saveConfig.menu, &saveConfig.back );
  166.     Menu_AddItem( &saveConfig.menu, &saveConfig.save );
  167. }
  168.  
  169.  
  170. /*
  171. =================
  172. UI_SaveConfigMenu_Cache
  173. =================
  174. */
  175. void UI_SaveConfigMenu_Cache( void ) {
  176.     trap_R_RegisterShaderNoMip( ART_BACK0 );
  177.     trap_R_RegisterShaderNoMip( ART_BACK1 );
  178.     trap_R_RegisterShaderNoMip( ART_SAVE0 );
  179.     trap_R_RegisterShaderNoMip( ART_SAVE1 );
  180.     trap_R_RegisterShaderNoMip( ART_BACKGROUND );
  181. }
  182.  
  183.  
  184. /*
  185. ===============
  186. UI_SaveConfigMenu
  187. ===============
  188. */
  189. void UI_SaveConfigMenu( void ) {
  190.     UI_SaveConfigMenu_Init();
  191.     UI_PushMenu( &saveConfig.menu );
  192. }
  193.